perm filename GZ[KID,KMC] blob sn#122908 filedate 1974-11-15 generic text, type T, neo UTF8
TITLE GZ
;THIS IS A PROGRAM TO FACILITATE THE HEARING OF SOUND FILES.
;A FILE NAME IS ACCUMULTED LETTER BY LETTER.
;IF THE FILE NAME (WITHOUT EXTENSION) IS TERMINATED BY
;	1) CR      THEN THE FILE IS PLAYED ONCE
;	2) +       THEN THE FILE IS PLAYED FIVE TIMES
;	3) .       THEN THE FILE IS INTERPRETED AS A FILE OF NAMES
EXTERNAL MAINLP, DPINIT, PDPGET, CLEAR, SHOW, AIVECT, CHINIT
EXTERNAL LV2, KILL, TYOPTR, TIKCNT, DDRREL, DMDDIR, SPEAK
INTERNAL DOTHNG, GAMNAM, DIRECT, GAMENO;

X1←6
X2 ← X1+1
X3 ← X2+1
X4 ← X3+1
X5 ← X4+1
X6 ← X5+1
P←17
A←13	;SAME AS X6
B←14
C←15

GAMNAM:	0			;NO DPY FILE REQUIRED.
GAMENO:	0
DIRECT:	BLOCK	2		;ALLOW FOR NO ENTRIES.

DOTHNG:	;POSSIBILITY OF INITIALISATION
	CAIN	X1,015		;TEST FOR CRLF
	JRST	ACTCR
	CAIN	X1,056		;TEST FOR PERIOD
	JRST	ACTPER
	CAIN	X1,053		;TEST FOR PLUS
	JRST	ACTPLS
	CAIN	X1,054		;TEST FOR COMMA
	JRST	ACTCOM
	CAIN	X1,073		;TEST FOR SEMICOLON
	JRST	ACTSMC

	CAILE	X1,132
	JRST	MAINLP		;REJECT CHARS ABOVE ALPHABET
	CAIGE	X1,060
	JRST	MAINLP		;REJECT CHARS BELOW DIGITS

	SUBI	X1,040		;RECODE TO SIXBIT
	MOVE	X2,LCWACC	;THE FLAG 'LAST CHAR WAS A CTRL CHAR'
	JUMPN	X2,ADDIN	;DONT JUMP IF WE MUST CLEAR.
	SETZM	FILNAM

ADDIN:	MOVE	X2,FILNAM	;GET THE PARTIAL FILE NAME
	LSH	X2,6		;MOVE IT 1 CHARACTER OVER
	OR	X2,X1		;OR IN THE NEW CHARACTER.
	MOVEM	X2,FILNAM
	SETOM	LCWACC		;INDICATE LAST CHAR NOT A CTRL CHAR.
	PUSHJ	P,FILSHO
	JRST	MAINLP

ACTCR:	PUSHJ	P,SHNAME	;LEFT JUSTIFY NAME
	SETZM	LCWACC
	PUSHJ	P,PLYFIL
	PUSHJ	P,FILSHO
	JRST	MAINLP

ACTPLS:	PUSHJ	P,SHNAME	;LEFT JUSTIFY NAME
	SETZM	LCWACC
	PUSHJ	P,PLYFIL
	PUSHJ	P,PLYFIL
	PUSHJ	P,PLYFIL
	PUSHJ	P,PLYFIL
	PUSHJ	P,PLYFIL
	PUSHJ	P,FILSHO
	JRST	MAINLP

ACTPER:	JRST	MAINLP
ACTSMC:	JRST	MAINLP
ACTCOM:	JRST	MAINLP

SHNAME:	MOVE	A,FILNAM
	JUMPE	A,SHNX
	LSH	A,6
	LSH	A,-6		;ERASE THE TOP CHAR
	CAME	A,FILNAM	;SKIP IF NO CHANGE
	JRST	SHNX
	LSH	A,6		;MOVE THE WORD ALONG
	MOVEM	A,FILNAM
	JRST	SHNAME
SHNX:	POPJ	P,


PLYFIL:	MOVE	A,FILNAM
	JUMPE	A,PLYX
	PUSHJ	P,DMDDIR
	JUMPN	A,PLYX
	PUSHJ	P,SPEAK
PLYX:	POPJ	P,


FILSHO:	PUSHJ	P,CLEAR
	MOVEI	A,-=500
	MOVEI	B,0
	PUSHJ	P,AIVECT	;AIVECT(-500,0)
	MOVEI	A,0
	MOVEI	B,0
	MOVEI	C,46
	MOVEI	0,7
	DPB	0,[POINT 3,C,27]
	PUSHJ	P,LV2		;GVECT(0,0,46,7,0)
	MOVEI	A,7
	MOVEI	B,=1000
	MOVEI	C,-=500
	PUSHJ	P,CHINIT	;CHINIT(7,1000,-500)
	MOVEI	X1,5		;LOOP OVER SIX CHARACTERS.
	MOVE	X2,FILNAM
NAMLP:	ROT	X2,6
	MOVEI	X3,77
	AND	X3,X2		;GET THE NEXT CHAR.
	ADDI	X3,040		;CONVERT TO ASCII
	IDPB	X3,TYOPTR
	SOSL	X1
	JRST	NAMLP

	MOVEI	A,1
	PUSHJ	P,SHOW

	POPJ	P,


FILNAM:	0
LCWACC:	0

END